package com.lyrcsoft.mybatis.spring;

import com.lyrcsoft.annotations.MyMapperScan;
import java.util.Map;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * Spring提供的一个扩展点，ConfigurationClassPostProsessor会去判断@Import注解导入的类分别是什么类型。
 * <p>
 * 当导入的类是ImportBeanDefinitionRegistrar。并在整个当前的configuration处理完之后去调用
 * </p>
 *
 * @author fujc-dev@qq.com
 * @date: 2023年11月26日 14:28
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

	@Override
	public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
		// importingClassMetadata：元数据，整个Configuration链路上的元素据
		// registry：就是我们的beanFactory
		Map<String, Object> annotationAttributes = importingClassMetadata.getAnnotationAttributes(MyMapperScan.class.getName());
		String value = String.valueOf(annotationAttributes.get("value"));
		System.out.println();
	}
}
